//
//  Renderer.hpp
//  LearnOpenGL
//
//  Created by Mr.Optimist on 2022/2/9.
//

#pragma once
#include <stdio.h>
#include <GL/glew.h>
#include "Shader.h"
#include "IndexBuffer.hpp"
#include "VertexArray.hpp"

// 宏：for arm64 根据条件触发断点
#define ASSERT(x) if (!(x))  __builtin_trap()
// 宏：x传入函数，被两个函数包裹运行
#define GLCall(x) GLClearError();\
    x;\
ASSERT(GLLogCall(#x, __FILE__, __LINE__))
    

void GLClearError();

bool GLLogCall(const char* function , const char* file, int line);

class Renderer{
public:
    void Clear() const;
    void Draw(const VertexArray& va, const IndexBuffer& ib, const Shader& shader) const;
private:
};